package 笔试记录.M9day8腾讯;

/*
给定一个只包含小写字母的字符串，每次可以选择两个相同的字符删除，并在结尾新增任意一个小写字母，问：多少次操作后，所有的字母都不相同？
 */
public class Main1 {
    public int minOperations (String str) {
        // write code here
        int[] arr = new int[26];
        char[] res = str.toCharArray();
        for (int i = 0; i < res.length; i++) {
            arr[res[i] - 'a']++;
        }
        int count = 0;
        while(true){
            int max = maxNum(arr);
            if(arr[max] < 2){
                break;
            }else if(arr[max] == 2){
                arr[max] = 1;
                count++;
            }else{
                arr[max] -= 2;
                int min = minNum(arr);
                arr[min] += 1;
                count++;
            }
        }
        return count;
    }

    public int minNum(int[] arr){
        int index = 0;
        int min = Integer.MAX_VALUE;
        for (int i = 0; i < arr.length; i++) {
            if(arr[i] < min){
                min = arr[i];
                index = i;
            }
        }
        return index;
    }

    public int maxNum(int[] arr){
        int index = 0;
        int max = Integer.MIN_VALUE;
        for(int i = 0;i < arr.length;i++){
            if(arr[i] > max){
                max = arr[i];
                index = i;
            }
        }
        return index;
    }
}
